October 27, 2021
BFS 알고리즘
을 사용해서 풀었다.
현 노드와 인접한 다음 레벨의 노드들을 탐색하면서, 해당 노드의 부모가 현 노드임을 표시해주기만 하면 된다.
import sys
from collections import deque
n = int(sys.stdin.readline().strip())
graph = [[] for _ in range(n+1)]
answer = [0]*(n+1) # 각 노드의 부모 노드를 표시할 리스트
for i in range(n-1):
a, b = map(int, sys.stdin.readline().strip().split(" "))
graph[a].append(b)
graph[b].append(a)
deq = deque([1])
answer[1] = 1
while deq:
now = deq.popleft()
for next in graph[now]:
if answer[next] == 0:
answer[next] = now # 부모 노드 표시
deq.append(next)
for i in range(2, n+1):
print(answer[i])